home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / public / Xprof / xmeasure / tstprops.c < prev    next >
C/C++ Source or Header  |  1994-08-01  |  7KB  |  322 lines

  1. /*==================================================================
  2.  *      File :          tstprops.c
  3.  *      Package:        Xmeasure
  4.  * 
  5.  *      Author :        Aloke Gupta.
  6.  *
  7.  *  (C) Copyright 1992, Aloke Gupta.
  8.  *  All rights granted to University of Illinois Board of Regents.
  9.  *==================================================================*/
  10.  
  11. #include <X11/Xatom.h>
  12. #include "perf.h"
  13.  
  14. /* Number of subwindows for some tests */
  15. #define SUBWINHEIGHT  (DISPHEIGHT / 4)
  16. #define SUBWINWIDTH   (DISPWIDTH  / 4)
  17.  
  18.  
  19. /* Shared variables */
  20. static int i;
  21. static Window window;
  22.  
  23. /* ====================================================================== */
  24. /* Property manipulation functions */
  25.  
  26. #define NUMPROPS 16    /* Hang 16 properties for ListProperties */
  27. static char **atom_names;
  28. static Atom atom;
  29. static Atom *atom_array;
  30. static Atom **atom_array_array;
  31. static char *atom_string = "_Test atom for performance measurement";
  32.  
  33. int   InternAtom(xd, xp)     
  34. XD *xd;
  35. XParams *xp;
  36. {
  37.     for (i = 0; i < xp->itns; i++)
  38.     XInternAtom(xd->display, atom_string,False);
  39. }
  40.  
  41. int i_InternAtom(xd, xp)     
  42. XD *xd;
  43. XParams *xp;
  44. {    /* Nothing to initialize */ }
  45.  
  46. int c_InternAtom(xd, xp)     
  47. XD *xd;
  48. XParams *xp;
  49. {    /* Nothing to cleanup */ }
  50.  
  51. /* ====================================================================== */
  52.  
  53. int   GetAtomName(xd, xp)    
  54. XD *xd;
  55. XParams *xp;
  56. {
  57.     for (i = 0; i < xp->itns; i++)
  58.     atom_names[i] = XGetAtomName(xd->display, atom);
  59. }
  60.  
  61. int i_GetAtomName(xd, xp)    
  62. XD *xd;
  63. XParams *xp;
  64. {
  65.     atom_names = (char **) malloc(xp->itns * sizeof (char *));
  66.     atom = XInternAtom(xd->display, atom_string,
  67.             False);
  68. }
  69.  
  70. int c_GetAtomName(xd, xp)    
  71. XD *xd;
  72. XParams *xp;
  73. {
  74.     for (i = 0; i < xp->itns; i++)
  75.     XFree(atom_names[i]);
  76.     free(atom_names);
  77. }
  78.  
  79. /* ====================================================================== */
  80.  
  81. int   ChangeProperty(xd, xp) 
  82. XD *xd;
  83. XParams *xp;
  84. {
  85.     Atom type  = XA_ATOM; 
  86.     int format = 8;
  87.     int mode   = PropModeReplace;
  88.     int length;
  89.  
  90.     length = strlen(atom_string);
  91.  
  92.     for (i = 0; i < xp->itns; i++)
  93.     XChangeProperty(xd->display, xd->window, atom, type, format,
  94.             mode, atom_string, length);
  95. }
  96.  
  97. int i_ChangeProperty(xd, xp) 
  98. XD *xd;
  99. XParams *xp;
  100. {   /* Create an atom for the atom_string */
  101.     atom = XInternAtom(xd->display, atom_string, False);
  102. }
  103.  
  104. int c_ChangeProperty(xd, xp) 
  105. XD *xd;
  106. XParams *xp;
  107. {
  108.     XDeleteProperty(xd->display, xd->window, atom);
  109. }
  110.  
  111. /* ====================================================================== */
  112.  
  113. int   DeleteProperty(xd, xp) 
  114. XD *xd;
  115. XParams *xp;
  116. {
  117.     for (i = 0; i < xp-> itns; i ++)
  118.     XDeleteProperty(xd->display, window, atom_array[i]);
  119. }
  120.  
  121. int i_DeleteProperty(xd, xp) 
  122. XD *xd;
  123. XParams *xp;
  124. {
  125.     char buffer[80];
  126.  
  127.     /* Create window for hanging properties from */
  128.     window = XCreateSimpleWindow(xd->display, xd->window, 0, 0,
  129.          SUBWINWIDTH, SUBWINHEIGHT, 1, xd->foreground, xd->background);
  130.     atom_array = (Atom *) malloc (xp->itns * sizeof(Atom));
  131.  
  132.     for (i = 0; i < xp-> itns; i ++)    {    /* Install the atoms */
  133.     sprintf(buffer, "Atom_%d", i);    /* Atom_1, Atom_2, ..., etc. */
  134.     atom_array[i] = XInternAtom(xd->display, buffer, False);
  135.  
  136.     /* Hang the property on the window */
  137.     XChangeProperty(xd->display, window, atom_array[i], XA_ATOM,
  138.         8, PropModeReplace, atom_string, strlen(atom_string));
  139.     }
  140. }
  141.  
  142. int c_DeleteProperty(xd, xp) 
  143. XD *xd;
  144. XParams *xp;
  145. {
  146.     free(atom_array);
  147.     XDestroySubwindows(xd->display, xd->window);
  148. }
  149.  
  150. /* ====================================================================== */
  151.  
  152. int   GetProperty(xd, xp)    
  153. XD *xd;
  154. XParams *xp;
  155. {
  156.     Atom ret_atom;
  157.     int ret_format;
  158.     unsigned long ret_len, ret_after;
  159.  
  160.     for (i = 0; i < xp-> itns; i ++) 
  161.     XGetWindowProperty(xd->display, xd->window, atom, 0, 8192, False,
  162.         XA_STRING, &ret_atom, &ret_format, &ret_len, &ret_after,
  163.         &atom_names[i]);
  164. }
  165.  
  166. int i_GetProperty(xd, xp)    
  167. XD *xd;
  168. XParams *xp;
  169. {
  170.     atom = XInternAtom(xd->display, atom_string, False);
  171.     atom_names = (char ** ) malloc(xp->itns * sizeof(char *));
  172.  
  173.     XChangeProperty(xd->display, xd->window, atom, XA_ATOM,
  174.     8, PropModeReplace, atom_string, strlen(atom_string));
  175. }
  176.  
  177. int c_GetProperty(xd, xp)    
  178. XD *xd;
  179. XParams *xp;
  180. {
  181.     for (i = 0; i < xp-> itns; i ++) 
  182.     XFree(atom_names[i]);
  183.     free(atom_names);
  184.     XDeleteProperty(xd->display, xd->window, atom);
  185. }
  186.  
  187. /* ====================================================================== */
  188.  
  189. int   ListProperties(xd, xp) 
  190. XD *xd;
  191. XParams *xp;
  192. {
  193.     int num_props;
  194.  
  195.     for (i = 0; i < xp-> itns; i ++)
  196.     atom_array_array[i] = XListProperties(xd->display, window, &num_props);
  197. }
  198.  
  199. int i_ListProperties(xd, xp) 
  200. XD *xd;
  201. XParams *xp;
  202. {
  203.     char buffer[80];
  204.  
  205.     atom_array = (Atom *) malloc (NUMPROPS * sizeof(Atom));
  206.     atom_array_array = (Atom **) malloc (xp->itns * sizeof(Atom *));
  207.     window = XCreateSimpleWindow(xd->display, xd->window, 0, 0,
  208.          SUBWINWIDTH, SUBWINHEIGHT, 1, xd->foreground, xd->background);
  209.  
  210.     for (i = 0; i < NUMPROPS; i ++) {    /* Install NUMPROPS atoms */
  211.     sprintf(buffer, "Atom_%d", i);  /* Atom_1, Atom_2, ..., etc. */
  212.     atom_array[i] = XInternAtom(xd->display, buffer, False);
  213.  
  214.     XChangeProperty(xd->display, window, atom_array[i], XA_ATOM, 8,
  215.         PropModeReplace, atom_string, strlen(atom_string));
  216.     }
  217. }
  218.  
  219. int c_ListProperties(xd, xp) 
  220. XD *xd;
  221. XParams *xp;
  222. {
  223.     free(atom_array);
  224.     XDestroySubwindows(xd->display, xd->window);
  225.     for (i = 0; i < xp-> itns; i ++)
  226.     XFree((caddr_t) atom_array_array[i]);
  227.     free(atom_array_array);
  228. }
  229.  
  230. /* ====================================================================== */
  231.  
  232. int   SetSelectionOwner(xd, xp)
  233. XD *xd;
  234. XParams *xp;
  235. {
  236. }
  237. int i_SetSelectionOwner(xd, xp)
  238. XD *xd;
  239. XParams *xp;
  240. {
  241. }
  242. int c_SetSelectionOwner(xd, xp)
  243. XD *xd;
  244. XParams *xp;
  245. {
  246. }
  247.  
  248. /* ====================================================================== */
  249.  
  250. int   GetSelectionOwner(xd, xp)
  251. XD *xd;
  252. XParams *xp;
  253. {
  254. }
  255. int i_GetSelectionOwner(xd, xp)
  256. XD *xd;
  257. XParams *xp;
  258. {
  259. }
  260. int c_GetSelectionOwner(xd, xp)
  261. XD *xd;
  262. XParams *xp;
  263. {
  264. }
  265.  
  266. /* ====================================================================== */
  267.  
  268. int   ConvertSelection(xd, xp)
  269. XD *xd;
  270. XParams *xp;
  271. {
  272. }
  273. int i_ConvertSelection(xd, xp)
  274. XD *xd;
  275. XParams *xp;
  276. {
  277. }
  278. int c_ConvertSelection(xd, xp)
  279. XD *xd;
  280. XParams *xp;
  281. {
  282. }
  283.  
  284. /* ====================================================================== */
  285.  
  286. int   RotateProperties(xd, xp)
  287. XD *xd;
  288. XParams *xp;
  289. {
  290.     for (i = 0; i < xp-> itns; i ++)
  291.     XRotateWindowProperties(xd->display, window, atom_array,
  292.                     NUMPROPS, NUMPROPS / 2);
  293. }
  294.  
  295. int i_RotateProperties(xd, xp)
  296. XD *xd;
  297. XParams *xp;
  298. {
  299.     char buffer[80];
  300.  
  301.     atom_array = (Atom *) malloc (NUMPROPS * sizeof(Atom));
  302.     window = XCreateSimpleWindow(xd->display, xd->window, 0, 0,
  303.              SUBWINWIDTH, SUBWINHEIGHT, 1, xd->foreground, xd->background);
  304.  
  305.     for (i = 0; i < NUMPROPS; i ++) {   /* Install NUMPROPS atoms */
  306.         sprintf(buffer, "Atom_%d", i);  /* Atom_1, Atom_2, ..., etc. */
  307.         atom_array[i] = XInternAtom(xd->display, buffer, False);
  308.  
  309.         XChangeProperty(xd->display, window, atom_array[i], XA_ATOM, 8,
  310.             PropModeReplace, atom_string, strlen(atom_string));
  311.     }
  312. }
  313.  
  314. int c_RotateProperties(xd, xp)
  315. XD *xd;
  316. XParams *xp;
  317. {
  318.     free(atom_array);
  319.     XDestroySubwindows(xd->display, xd->window);
  320. }
  321.  
  322.